<!DOCTYPE html>
<html lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>sample_object_model_3d [HALCON算子参考手册]</title>
<style type="text/css">
      body {
    color: #000000;
    background-color: #ffffff;
    margin: 0;
    font-family: Arial, Helvetica, sans-serif;
}

.body_main {
    margin-left: 35px;
    margin-right: 35px;
}

@media screen and (min-width:992px) {

    .body_main {
        margin-left: 10%;
        margin-right: 10%;
    }

    table.toctable {
        width: 80%
    }
}

@media screen and (min-width:1400px) {

    .body_main {
        margin-left: 15%;
        margin-right: 15%;
    }

    table.toctable {
        width: 70%
    }
}

body>div ul ul {
    margin-left: inherit;
}

a:link {
    color: #0044cc;
}

a:link,
a:visited {
    text-decoration: none;
}

a:link:hover,
a:visited:hover {
    text-decoration: underline;
}

th {
    text-align: left;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    text-rendering: optimizeLegibility;
    color: #666666;
}

code {
    font-family: monospace,monospace;
}

h1 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

h2 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

hr {
    border: 0;
    border-top: solid 1px #f28d26;
}

.pre {
    display: block;
    padding-bottom: 1ex;
    font-family: monospace;
    white-space: pre;
}

pre {
    font-family: monospace, monospace;
    padding: 1ex;
    white-space: pre-wrap;
}

.toc {
    font-size: 80%;
    border-top: 1px dashed #f28d26;
    border-bottom: 1px dashed #f28d26;
    padding-top: 5px;
    padding-bottom: 5px;
}

.inv {
    margin: 0;
    border: 0;
    padding: 0;
}

.banner {
    color: #666666;
    padding-left: 1em;
}

.logo {
    background-color: white;
}

.keyboard {
    font-size: 80%;
    padding-left: 3px;
    padding-right: 3px;
    border-radius: 5px;
    border-width: 1px;
    border-style: solid;
    border-color: #f28d26;
    background-color: #f3f3f3;
}

.warning {
    margin-top: 2ex;
    margin-bottom: 1ex;
    padding: 10px;
    text-align: center;
    border: 1px solid;
    color: #bb0000;
    background-color: #fff7f7
}

.imprint {
    margin-top: 1ex;
    font-size: 80%;
    color: #666666;
}

.imprinthead {
    font-weight: bolder;
    color: #666666;
}

.indexlink {
    text-align: right;
    padding-bottom: 5px;
}

.postscript {
    margin-top: 2ex;
    font-size: 80%;
    color: #666666
}

.evenrow {
    background-color: #e7e7ef;
    vertical-align: top;
}

.oddrow {
    background-color: #f7f7ff;
    vertical-align: top;
}

.headrow {
    background-color: #97979f;
    color: #ffffff;
    vertical-align: top;
}

.logorow {
    vertical-align: top;
}

.error {
    color: red;
}

.var {
    font-style: italic
}

.halconoperator {
    font-family: monospace, monospace;
}

span.operator {
    font-family: monospace, monospace;
}

span.procedure {
    font-family: monospace, monospace;
}

span.operation {
    font-family: monospace, monospace;
}

span.feature {
    font-family: Arial, Helvetica, Homerton, sans-serif;
}

ul {
    padding-left: 1.2em;
}

li.dot {
    list-style-type: square;
    color: #f28d26;
}

.breadcrumb {
    font-size: 80%;
    color: white;
    background-color: #062d64;
    margin-bottom: 20px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 15px;
}

.webbar {
    font-size: 80%;
    background-color: #dddddd;
    margin-top: 0px;
    margin-left: -35px;
    margin-right: -35px;
    margin-bottom: 0px;
    padding-top: 5px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 5px;
}

.footer {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    border-top: 1px dashed #f28d26;
    font-size: 80%;
    color: #666666;
    padding-bottom: 8px;
}

.footer .socialmedia a {
    padding-left: 7px;
}

.socialmedia {
    padding-top: 10px;
}

.copyright {
    margin-top: 19px;
}

.breadcrumb a {
    color: #ffffff;
    border-bottom: 1px solid white;
}

.breadcrumb a:link:hover,
.breadcrumb a:visited:hover {
    text-decoration: none;
    border-bottom: none;
}

.heading {
    margin-top: 1ex;
    font-size: 110%;
    font-weight: bold;
    color: #666666;
}

.text {
    color: black;
}

.example {
    font-size: 80%;
    background-color: #f3f3f3;
    border: 1px dashed #666666;
    padding: 10px;
}

.displaymath {
    display: block;
    text-align: center;
    margin-top: 1ex;
    margin-bottom: 1ex;
}

.title {
    float: left;
    padding-top: 3px;
    padding-bottom: 3px;
}

.signnote {
    font-family: Arial, Helvetica, Homerton, sans-serif;
    font-size: 80%;
    color: #666666;
    font-weight: lighter;
    font-style: italic
}

.par {
    margin-bottom: 1.5em;
}

.parhead {
    text-align: right;
}

.parname {
    float: left;
}

.pardesc {
    font-size: 85%;
    margin-top: 0.5em;
    margin-bottom: 0.5em;
    margin-left: 2em;
}

.parcat {
    color: #666;
    font-weight: bold;
}

*[data-if=cpp],
*[data-if=c],
*[data-if=dotnet],
*[data-if=com],
*[data-if=python] {
    display: none;
}

.tabbar {
    text-align: right;
    border-bottom: 1px solid #f28d26;
    margin-bottom: 0.5em;
}

ul.tabs {
    padding-top: 3px;
    padding-bottom: 3px;
    margin-top: 10px;
    margin-bottom: 0;
    font-size: 80%
}

ul.tabs li {
    padding-top: 3px;
    padding-bottom: 3px;
    display: inline;
    overflow: hidden;
    list-style-type: none;
    margin: 0;
    margin-left: 8px;
    border-top: 1px solid #666;
    border-left: 1px solid #666;
    border-right: 1px solid #666;
}

ul.tabs li.active {
    border-left: 1px solid #f28d26;
    border-right: 1px solid #f28d26;
    border-top: 1px solid #f28d26;
    border-bottom: 1px solid #fff;
}

ul.tabs li.inactive {
    background-color: #eee;
}

ul.tabs li a {
    padding-left: 5px;
    padding-right: 5px;
    color: #666;
}

ul.tabs li a:link:hover {
    text-decoration: none;
}

ul.tabs li.inactive a {
    color: #666;
}

ul.tabs li.active a {
    color: black;
}

dl.generic dd {
    margin-bottom: 1em;
}

.pari {
    color: olive;
}

.paro {
    color: maroon;
}

.comment {
    font-size: 80%;
    color: green;
    white-space: nowrap;
}

table.grid {
    border-collapse: collapse;
}

table.grid td {
    padding: 5px;
    border: 1px solid;
}

table.layout {
    border: 0px;
}

table.layout td {
    padding: 5px;
}

table.table {
    border-collapse: collapse;
}

table.table td {
    padding: 5px;
    border-left: 0px;
    border-right: 0px;
}

table.table tr:last-child {
    border-bottom: 1px solid;
}

table.table th {
    padding: 5px;
    border-top: 1px solid;
    border-bottom: 1px solid;
    border-left: 0px;
    border-right: 0px;
}

.details_summary {
    cursor: pointer;
}

table.toctable {
    width: 100%;
}

table.toctable col:first-child {
    width: 20%;
}

table.toctable col:nth-last-child(2) {
    width: 8%;
}

table.altcolored tr:nth-child(even) {
    background-color: #f3f3f3;
}

    </style>
<!--OP_REF_STYLE_END-->
<script>
    <!--
var active_lang='hdevelop';function switchVisibility(obj,active_lang,new_lang)
{var display_style='inline';
for(var i=0;i<obj.length;i++)
{if(obj.item(i).getAttribute('data-if')==new_lang)
{obj.item(i).style.display=display_style;}
if(obj.item(i).getAttribute('data-if')==active_lang)
{obj.item(i).style.display='none';}}
return;}
function toggleLanguage(new_lang,initial)
{if(active_lang!=new_lang)
{var lis=document.getElementsByTagName('li');for(var i=0;i<lis.length;i++)
{if(lis.item(i).id=='syn-'+new_lang)
{lis.item(i).className='active';}
else
{lis.item(i).className='inactive';}}
var divs=document.getElementsByTagName('div');var spans=document.getElementsByTagName('span');switchVisibility(divs,active_lang,new_lang);switchVisibility(spans,active_lang,new_lang);if(!initial)
{setCookie("halcon_reference_language",new_lang,null,null);}
active_lang=new_lang;}
return;}
function setCookie(name,value,domain,exp_offset,path,secure)
{localStorage.setItem(name,value);}
function getCookie(name)
{return localStorage.getItem(name);}
function initialize()
{var qs=location.href.split('?')[1];var qs_lang_raw=location.href.split('interface=')[1];var qs_lang;if(qs_lang_raw)
{qs_lang=qs_lang_raw.split('#')[0];}
var cookie_lang=getCookie("halcon_reference_language");var new_lang;if((qs_lang=="hdevelop")||(qs_lang=="dotnet")||(qs_lang=="python")||(qs_lang=="cpp")||(qs_lang=="c"))
{new_lang=qs_lang;setCookie("halcon_reference_language",new_lang,null,null);}
else if((cookie_lang=="hdevelop")||(cookie_lang=="dotnet")||(cookie_lang=="python")||(cookie_lang=="cpp")||(cookie_lang=="c"))
{new_lang=cookie_lang;}
else
{new_lang="hdevelop";}
toggleLanguage(new_lang,1);return;}
-->

  </script>
</head>
<body onload="initialize();">
<div class="breadcrumb">
<br class="inv"><a href="index.html">目录</a> / <a href="toc_3dobjectmodel.html">3D Object Model</a> / <a href="toc_3dobjectmodel_transformations.html">变换</a><br class="inv">
</div>
<div class="body_main">
<div class="tabbar"><ul class="tabs">
<li id="syn-hdevelop" class="active"><a href="javascript:void(0);" onclick="toggleLanguage('hdevelop')" onfocus="blur()">HDevelop</a></li>
<li id="syn-dotnet" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('dotnet')" onfocus="blur()">.NET</a></li>
<li id="syn-python" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('python')" onfocus="blur()">Python</a></li>
<li id="syn-cpp" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('cpp')" onfocus="blur()">C++</a></li>
<li id="syn-c" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('c')" onfocus="blur()">C</a></li>
</ul></div>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<!--OP_REF_HEADER_END-->
<h1 id="sec_name">
<span data-if="hdevelop" style="display:inline;">sample_object_model_3d</span><span data-if="c" style="display:none;">T_sample_object_model_3d</span><span data-if="cpp" style="display:none;">SampleObjectModel3d</span><span data-if="dotnet" style="display:none;">SampleObjectModel3d</span><span data-if="python" style="display:none;">sample_object_model_3d</span> (算子名称)</h1>
<h2>名称</h2>
<p><code><span data-if="hdevelop" style="display:inline;">sample_object_model_3d</span><span data-if="c" style="display:none;">T_sample_object_model_3d</span><span data-if="cpp" style="display:none;">SampleObjectModel3d</span><span data-if="dotnet" style="display:none;">SampleObjectModel3d</span><span data-if="python" style="display:none;">sample_object_model_3d</span></code> — Sample a 3D object model.</p>
<h2 id="sec_synopsis">参数签名</h2>
<div data-if="hdevelop" style="display:inline;">
<p>
<code><b>sample_object_model_3d</b>( :  : <a href="#ObjectModel3D"><i>ObjectModel3D</i></a>, <a href="#Method"><i>Method</i></a>, <a href="#SampleDistance"><i>SampleDistance</i></a>, <a href="#GenParamName"><i>GenParamName</i></a>, <a href="#GenParamValue"><i>GenParamValue</i></a> : <a href="#SampledObjectModel3D"><i>SampledObjectModel3D</i></a>)</code></p>
</div>
<div data-if="c" style="display:none;">
<p>
<code>Herror <b>T_sample_object_model_3d</b>(const Htuple <a href="#ObjectModel3D"><i>ObjectModel3D</i></a>, const Htuple <a href="#Method"><i>Method</i></a>, const Htuple <a href="#SampleDistance"><i>SampleDistance</i></a>, const Htuple <a href="#GenParamName"><i>GenParamName</i></a>, const Htuple <a href="#GenParamValue"><i>GenParamValue</i></a>, Htuple* <a href="#SampledObjectModel3D"><i>SampledObjectModel3D</i></a>)</code></p>
</div>
<div data-if="cpp" style="display:none;">
<p>
<code>void <b>SampleObjectModel3d</b>(const HTuple&amp; <a href="#ObjectModel3D"><i>ObjectModel3D</i></a>, const HTuple&amp; <a href="#Method"><i>Method</i></a>, const HTuple&amp; <a href="#SampleDistance"><i>SampleDistance</i></a>, const HTuple&amp; <a href="#GenParamName"><i>GenParamName</i></a>, const HTuple&amp; <a href="#GenParamValue"><i>GenParamValue</i></a>, HTuple* <a href="#SampledObjectModel3D"><i>SampledObjectModel3D</i></a>)</code></p>
<p>
<code>static HObjectModel3DArray <a href="HObjectModel3D.html">HObjectModel3D</a>::<b>SampleObjectModel3d</b>(const HObjectModel3DArray&amp; <a href="#ObjectModel3D"><i>ObjectModel3D</i></a>, const HString&amp; <a href="#Method"><i>Method</i></a>, const HTuple&amp; <a href="#SampleDistance"><i>SampleDistance</i></a>, const HTuple&amp; <a href="#GenParamName"><i>GenParamName</i></a>, const HTuple&amp; <a href="#GenParamValue"><i>GenParamValue</i></a>)</code></p>
<p>
<code><a href="HObjectModel3D.html">HObjectModel3D</a> <a href="HObjectModel3D.html">HObjectModel3D</a>::<b>SampleObjectModel3d</b>(const HString&amp; <a href="#Method"><i>Method</i></a>, double <a href="#SampleDistance"><i>SampleDistance</i></a>, const HTuple&amp; <a href="#GenParamName"><i>GenParamName</i></a>, const HTuple&amp; <a href="#GenParamValue"><i>GenParamValue</i></a>) const</code></p>
<p>
<code><a href="HObjectModel3D.html">HObjectModel3D</a> <a href="HObjectModel3D.html">HObjectModel3D</a>::<b>SampleObjectModel3d</b>(const char* <a href="#Method"><i>Method</i></a>, double <a href="#SampleDistance"><i>SampleDistance</i></a>, const HTuple&amp; <a href="#GenParamName"><i>GenParamName</i></a>, const HTuple&amp; <a href="#GenParamValue"><i>GenParamValue</i></a>) const</code></p>
<p>
<code><a href="HObjectModel3D.html">HObjectModel3D</a> <a href="HObjectModel3D.html">HObjectModel3D</a>::<b>SampleObjectModel3d</b>(const wchar_t* <a href="#Method"><i>Method</i></a>, double <a href="#SampleDistance"><i>SampleDistance</i></a>, const HTuple&amp; <a href="#GenParamName"><i>GenParamName</i></a>, const HTuple&amp; <a href="#GenParamValue"><i>GenParamValue</i></a>) const  <span class="signnote">
            (
            Windows only)
          </span></code></p>
</div>
<div data-if="com" style="display:none;"></div>
<div data-if="dotnet" style="display:none;">
<p>
<code>static void <a href="HOperatorSet.html">HOperatorSet</a>.<b>SampleObjectModel3d</b>(<a href="HTuple.html">HTuple</a> <a href="#ObjectModel3D"><i>objectModel3D</i></a>, <a href="HTuple.html">HTuple</a> <a href="#Method"><i>method</i></a>, <a href="HTuple.html">HTuple</a> <a href="#SampleDistance"><i>sampleDistance</i></a>, <a href="HTuple.html">HTuple</a> <a href="#GenParamName"><i>genParamName</i></a>, <a href="HTuple.html">HTuple</a> <a href="#GenParamValue"><i>genParamValue</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#SampledObjectModel3D"><i>sampledObjectModel3D</i></a>)</code></p>
<p>
<code>static <a href="HObjectModel3D.html">HObjectModel3D[]</a> <a href="HObjectModel3D.html">HObjectModel3D</a>.<b>SampleObjectModel3d</b>(<a href="HObjectModel3D.html">HObjectModel3D[]</a> <a href="#ObjectModel3D"><i>objectModel3D</i></a>, string <a href="#Method"><i>method</i></a>, <a href="HTuple.html">HTuple</a> <a href="#SampleDistance"><i>sampleDistance</i></a>, <a href="HTuple.html">HTuple</a> <a href="#GenParamName"><i>genParamName</i></a>, <a href="HTuple.html">HTuple</a> <a href="#GenParamValue"><i>genParamValue</i></a>)</code></p>
<p>
<code><a href="HObjectModel3D.html">HObjectModel3D</a> <a href="HObjectModel3D.html">HObjectModel3D</a>.<b>SampleObjectModel3d</b>(string <a href="#Method"><i>method</i></a>, double <a href="#SampleDistance"><i>sampleDistance</i></a>, <a href="HTuple.html">HTuple</a> <a href="#GenParamName"><i>genParamName</i></a>, <a href="HTuple.html">HTuple</a> <a href="#GenParamValue"><i>genParamValue</i></a>)</code></p>
</div>
<div data-if="python" style="display:none;">
<p>
<code>def <b>sample_object_model_3d</b>(<a href="#ObjectModel3D"><i>object_model_3d</i></a>: MaybeSequence[HHandle], <a href="#Method"><i>method</i></a>: str, <a href="#SampleDistance"><i>sample_distance</i></a>: MaybeSequence[Union[float, int]], <a href="#GenParamName"><i>gen_param_name</i></a>: Sequence[str], <a href="#GenParamValue"><i>gen_param_value</i></a>: Sequence[Union[int, str, float]]) -&gt; Sequence[HHandle]</code></p>
<p>
<code>def <b>sample_object_model_3d_s</b>(<a href="#ObjectModel3D"><i>object_model_3d</i></a>: MaybeSequence[HHandle], <a href="#Method"><i>method</i></a>: str, <a href="#SampleDistance"><i>sample_distance</i></a>: MaybeSequence[Union[float, int]], <a href="#GenParamName"><i>gen_param_name</i></a>: Sequence[str], <a href="#GenParamValue"><i>gen_param_value</i></a>: Sequence[Union[int, str, float]]) -&gt; HHandle</code></p>
</div>
<h2 id="sec_description">描述</h2>
<p><code><span data-if="hdevelop" style="display:inline">sample_object_model_3d</span><span data-if="c" style="display:none">sample_object_model_3d</span><span data-if="cpp" style="display:none">SampleObjectModel3d</span><span data-if="com" style="display:none">SampleObjectModel3d</span><span data-if="dotnet" style="display:none">SampleObjectModel3d</span><span data-if="python" style="display:none">sample_object_model_3d</span></code> creates a sampled version of the 3D object
model <a href="#ObjectModel3D"><i><code><span data-if="hdevelop" style="display:inline">ObjectModel3D</span><span data-if="c" style="display:none">ObjectModel3D</span><span data-if="cpp" style="display:none">ObjectModel3D</span><span data-if="com" style="display:none">ObjectModel3D</span><span data-if="dotnet" style="display:none">objectModel3D</span><span data-if="python" style="display:none">object_model_3d</span></code></i></a> which consists of points that have the
minimum distance <a href="#SampleDistance"><i><code><span data-if="hdevelop" style="display:inline">SampleDistance</span><span data-if="c" style="display:none">SampleDistance</span><span data-if="cpp" style="display:none">SampleDistance</span><span data-if="com" style="display:none">SampleDistance</span><span data-if="dotnet" style="display:none">sampleDistance</span><span data-if="python" style="display:none">sample_distance</span></code></i></a> to each other.
The created 3D object model is returned in <a href="#SampledObjectModel3D"><i><code><span data-if="hdevelop" style="display:inline">SampledObjectModel3D</span><span data-if="c" style="display:none">SampledObjectModel3D</span><span data-if="cpp" style="display:none">SampledObjectModel3D</span><span data-if="com" style="display:none">SampledObjectModel3D</span><span data-if="dotnet" style="display:none">sampledObjectModel3D</span><span data-if="python" style="display:none">sampled_object_model_3d</span></code></i></a>.
</p>
<p>Using <code><span data-if="hdevelop" style="display:inline">sample_object_model_3d</span><span data-if="c" style="display:none">sample_object_model_3d</span><span data-if="cpp" style="display:none">SampleObjectModel3d</span><span data-if="com" style="display:none">SampleObjectModel3d</span><span data-if="dotnet" style="display:none">SampleObjectModel3d</span><span data-if="python" style="display:none">sample_object_model_3d</span></code> is recommended if complex point clouds
are to be thinned out for faster postprocessing or if primitives are to be
converted to point clouds.
Note that if the 3D object model is triangulated and should be simplified by
preserving its original geometry as good as possible,
<a href="simplify_object_model_3d.html"><code><span data-if="hdevelop" style="display:inline">simplify_object_model_3d</span><span data-if="c" style="display:none">simplify_object_model_3d</span><span data-if="cpp" style="display:none">SimplifyObjectModel3d</span><span data-if="com" style="display:none">SimplifyObjectModel3d</span><span data-if="dotnet" style="display:none">SimplifyObjectModel3d</span><span data-if="python" style="display:none">simplify_object_model_3d</span></code></a> should be used instead.
</p>
<p>If the input object model <a href="#ObjectModel3D"><i><code><span data-if="hdevelop" style="display:inline">ObjectModel3D</span><span data-if="c" style="display:none">ObjectModel3D</span><span data-if="cpp" style="display:none">ObjectModel3D</span><span data-if="com" style="display:none">ObjectModel3D</span><span data-if="dotnet" style="display:none">objectModel3D</span><span data-if="python" style="display:none">object_model_3d</span></code></i></a> contains only points,
several sampling methods are available which can be selected using
the parameter <a href="#Method"><i><code><span data-if="hdevelop" style="display:inline">Method</span><span data-if="c" style="display:none">Method</span><span data-if="cpp" style="display:none">Method</span><span data-if="com" style="display:none">Method</span><span data-if="dotnet" style="display:none">method</span><span data-if="python" style="display:none">method</span></code></i></a>:
</p>
<dl class="generic">

<dt><b><i><span data-if="hdevelop" style="display:inline">'fast'</span><span data-if="c" style="display:none">"fast"</span><span data-if="cpp" style="display:none">"fast"</span><span data-if="com" style="display:none">"fast"</span><span data-if="dotnet" style="display:none">"fast"</span><span data-if="python" style="display:none">"fast"</span></i>:</b></dt>
<dd>
<p>

The default method <i><span data-if="hdevelop" style="display:inline">'fast'</span><span data-if="c" style="display:none">"fast"</span><span data-if="cpp" style="display:none">"fast"</span><span data-if="com" style="display:none">"fast"</span><span data-if="dotnet" style="display:none">"fast"</span><span data-if="python" style="display:none">"fast"</span></i> adds
all points from the input model which are not
close to any point that was earlier added to the output model.
If present, normals, XYZ-mapping and extended point attributes are copied to
the output model.
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'fast_compute_normals'</span><span data-if="c" style="display:none">"fast_compute_normals"</span><span data-if="cpp" style="display:none">"fast_compute_normals"</span><span data-if="com" style="display:none">"fast_compute_normals"</span><span data-if="dotnet" style="display:none">"fast_compute_normals"</span><span data-if="python" style="display:none">"fast_compute_normals"</span></i>:</b></dt>
<dd>
<p>

The method  <i><span data-if="hdevelop" style="display:inline">'fast_compute_normals'</span><span data-if="c" style="display:none">"fast_compute_normals"</span><span data-if="cpp" style="display:none">"fast_compute_normals"</span><span data-if="com" style="display:none">"fast_compute_normals"</span><span data-if="dotnet" style="display:none">"fast_compute_normals"</span><span data-if="python" style="display:none">"fast_compute_normals"</span></i> selects the same points
as the method <i><span data-if="hdevelop" style="display:inline">'fast'</span><span data-if="c" style="display:none">"fast"</span><span data-if="cpp" style="display:none">"fast"</span><span data-if="com" style="display:none">"fast"</span><span data-if="dotnet" style="display:none">"fast"</span><span data-if="python" style="display:none">"fast"</span></i>, but additionally calculates the
normals for all points that were selected.
For this, the input object model must either contain normals, which are
copied, or it must contain a XYZ-mapping attribute from which the
normals are computed. The z-component of the calculated normal
vectors is always positive. The XYZ-mapping is created by
<a href="xyz_to_object_model_3d.html"><code><span data-if="hdevelop" style="display:inline">xyz_to_object_model_3d</span><span data-if="c" style="display:none">xyz_to_object_model_3d</span><span data-if="cpp" style="display:none">XyzToObjectModel3d</span><span data-if="com" style="display:none">XyzToObjectModel3d</span><span data-if="dotnet" style="display:none">XyzToObjectModel3d</span><span data-if="python" style="display:none">xyz_to_object_model_3d</span></code></a>.
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'accurate'</span><span data-if="c" style="display:none">"accurate"</span><span data-if="cpp" style="display:none">"accurate"</span><span data-if="com" style="display:none">"accurate"</span><span data-if="dotnet" style="display:none">"accurate"</span><span data-if="python" style="display:none">"accurate"</span></i>:</b></dt>
<dd>
<p>

The method <i><span data-if="hdevelop" style="display:inline">'accurate'</span><span data-if="c" style="display:none">"accurate"</span><span data-if="cpp" style="display:none">"accurate"</span><span data-if="com" style="display:none">"accurate"</span><span data-if="dotnet" style="display:none">"accurate"</span><span data-if="python" style="display:none">"accurate"</span></i> goes through the points of the 3D object
model <a href="#ObjectModel3D"><i><code><span data-if="hdevelop" style="display:inline">ObjectModel3D</span><span data-if="c" style="display:none">ObjectModel3D</span><span data-if="cpp" style="display:none">ObjectModel3D</span><span data-if="com" style="display:none">ObjectModel3D</span><span data-if="dotnet" style="display:none">objectModel3D</span><span data-if="python" style="display:none">object_model_3d</span></code></i></a> and calculates whether any other points are
within a sphere with the radius <a href="#SampleDistance"><i><code><span data-if="hdevelop" style="display:inline">SampleDistance</span><span data-if="c" style="display:none">SampleDistance</span><span data-if="cpp" style="display:none">SampleDistance</span><span data-if="com" style="display:none">SampleDistance</span><span data-if="dotnet" style="display:none">sampleDistance</span><span data-if="python" style="display:none">sample_distance</span></code></i></a> around the
examined point.
If there are no other points, the original point is stored
in <a href="#SampledObjectModel3D"><i><code><span data-if="hdevelop" style="display:inline">SampledObjectModel3D</span><span data-if="c" style="display:none">SampledObjectModel3D</span><span data-if="cpp" style="display:none">SampledObjectModel3D</span><span data-if="com" style="display:none">SampledObjectModel3D</span><span data-if="dotnet" style="display:none">sampledObjectModel3D</span><span data-if="python" style="display:none">sampled_object_model_3d</span></code></i></a>.
If there are other points, the center of gravity of these
points (including the original point) is stored in
<a href="#SampledObjectModel3D"><i><code><span data-if="hdevelop" style="display:inline">SampledObjectModel3D</span><span data-if="c" style="display:none">SampledObjectModel3D</span><span data-if="cpp" style="display:none">SampledObjectModel3D</span><span data-if="com" style="display:none">SampledObjectModel3D</span><span data-if="dotnet" style="display:none">sampledObjectModel3D</span><span data-if="python" style="display:none">sampled_object_model_3d</span></code></i></a>.
This procedure is repeated with the remaining points until there
are no points left.
Extended attributes of the input 3D object model are not copied, but
normals and XYZ-mapping are copied.
For this method, a noise removal is possible by specifying a
value for <i><span data-if="hdevelop" style="display:inline">'min_num_points'</span><span data-if="c" style="display:none">"min_num_points"</span><span data-if="cpp" style="display:none">"min_num_points"</span><span data-if="com" style="display:none">"min_num_points"</span><span data-if="dotnet" style="display:none">"min_num_points"</span><span data-if="python" style="display:none">"min_num_points"</span></i>
in <a href="#GenParamName"><i><code><span data-if="hdevelop" style="display:inline">GenParamName</span><span data-if="c" style="display:none">GenParamName</span><span data-if="cpp" style="display:none">GenParamName</span><span data-if="com" style="display:none">GenParamName</span><span data-if="dotnet" style="display:none">genParamName</span><span data-if="python" style="display:none">gen_param_name</span></code></i></a> and <a href="#GenParamValue"><i><code><span data-if="hdevelop" style="display:inline">GenParamValue</span><span data-if="c" style="display:none">GenParamValue</span><span data-if="cpp" style="display:none">GenParamValue</span><span data-if="com" style="display:none">GenParamValue</span><span data-if="dotnet" style="display:none">genParamValue</span><span data-if="python" style="display:none">gen_param_value</span></code></i></a>, which removes all
interpolated points that had less than the specified number of neighbor
points in the original model.
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'accurate_use_normals'</span><span data-if="c" style="display:none">"accurate_use_normals"</span><span data-if="cpp" style="display:none">"accurate_use_normals"</span><span data-if="com" style="display:none">"accurate_use_normals"</span><span data-if="dotnet" style="display:none">"accurate_use_normals"</span><span data-if="python" style="display:none">"accurate_use_normals"</span></i>:</b></dt>
<dd>
<p>

The method <i><span data-if="hdevelop" style="display:inline">'accurate_use_normals'</span><span data-if="c" style="display:none">"accurate_use_normals"</span><span data-if="cpp" style="display:none">"accurate_use_normals"</span><span data-if="com" style="display:none">"accurate_use_normals"</span><span data-if="dotnet" style="display:none">"accurate_use_normals"</span><span data-if="python" style="display:none">"accurate_use_normals"</span></i> requires normals in the
input 3D object model and interpolates only points with similar
normals.
The similarity depends on the angle between the normals. The threshold
of the angle can be specified in <a href="#GenParamName"><i><code><span data-if="hdevelop" style="display:inline">GenParamName</span><span data-if="c" style="display:none">GenParamName</span><span data-if="cpp" style="display:none">GenParamName</span><span data-if="com" style="display:none">GenParamName</span><span data-if="dotnet" style="display:none">genParamName</span><span data-if="python" style="display:none">gen_param_name</span></code></i></a> and
<a href="#GenParamValue"><i><code><span data-if="hdevelop" style="display:inline">GenParamValue</span><span data-if="c" style="display:none">GenParamValue</span><span data-if="cpp" style="display:none">GenParamValue</span><span data-if="com" style="display:none">GenParamValue</span><span data-if="dotnet" style="display:none">genParamValue</span><span data-if="python" style="display:none">gen_param_value</span></code></i></a> with <i><span data-if="hdevelop" style="display:inline">'max_angle_diff'</span><span data-if="c" style="display:none">"max_angle_diff"</span><span data-if="cpp" style="display:none">"max_angle_diff"</span><span data-if="com" style="display:none">"max_angle_diff"</span><span data-if="dotnet" style="display:none">"max_angle_diff"</span><span data-if="python" style="display:none">"max_angle_diff"</span></i>.
The default value is <i>180</i> degrees.
Additionally, outliers can be removed as described in the method
<i><span data-if="hdevelop" style="display:inline">'accurate'</span><span data-if="c" style="display:none">"accurate"</span><span data-if="cpp" style="display:none">"accurate"</span><span data-if="com" style="display:none">"accurate"</span><span data-if="dotnet" style="display:none">"accurate"</span><span data-if="python" style="display:none">"accurate"</span></i>, by setting the generic parameter
<i><span data-if="hdevelop" style="display:inline">'min_num_points'</span><span data-if="c" style="display:none">"min_num_points"</span><span data-if="cpp" style="display:none">"min_num_points"</span><span data-if="com" style="display:none">"min_num_points"</span><span data-if="dotnet" style="display:none">"min_num_points"</span><span data-if="python" style="display:none">"min_num_points"</span></i>.
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'xyz_mapping'</span><span data-if="c" style="display:none">"xyz_mapping"</span><span data-if="cpp" style="display:none">"xyz_mapping"</span><span data-if="com" style="display:none">"xyz_mapping"</span><span data-if="dotnet" style="display:none">"xyz_mapping"</span><span data-if="python" style="display:none">"xyz_mapping"</span></i>:</b></dt>
<dd>
<p>

The method <i><span data-if="hdevelop" style="display:inline">'xyz_mapping'</span><span data-if="c" style="display:none">"xyz_mapping"</span><span data-if="cpp" style="display:none">"xyz_mapping"</span><span data-if="com" style="display:none">"xyz_mapping"</span><span data-if="dotnet" style="display:none">"xyz_mapping"</span><span data-if="python" style="display:none">"xyz_mapping"</span></i> can only be applied to 3D object models
that contain an XYZ-mapping (for example, if it was created using
<a href="xyz_to_object_model_3d.html"><code><span data-if="hdevelop" style="display:inline">xyz_to_object_model_3d</span><span data-if="c" style="display:none">xyz_to_object_model_3d</span><span data-if="cpp" style="display:none">XyzToObjectModel3d</span><span data-if="com" style="display:none">XyzToObjectModel3d</span><span data-if="dotnet" style="display:none">XyzToObjectModel3d</span><span data-if="python" style="display:none">xyz_to_object_model_3d</span></code></a>).
This mapping stores for each 3D point its original image coordinates.
The method <i><span data-if="hdevelop" style="display:inline">'xyz_mapping'</span><span data-if="c" style="display:none">"xyz_mapping"</span><span data-if="cpp" style="display:none">"xyz_mapping"</span><span data-if="com" style="display:none">"xyz_mapping"</span><span data-if="dotnet" style="display:none">"xyz_mapping"</span><span data-if="python" style="display:none">"xyz_mapping"</span></i> subdivides those original images into
squares with side length <a href="#SampleDistance"><i><code><span data-if="hdevelop" style="display:inline">SampleDistance</span><span data-if="c" style="display:none">SampleDistance</span><span data-if="cpp" style="display:none">SampleDistance</span><span data-if="com" style="display:none">SampleDistance</span><span data-if="dotnet" style="display:none">sampleDistance</span><span data-if="python" style="display:none">sample_distance</span></code></i></a> (which is given in
pixel) and selects one 3D point per square.
</p>
<p>The method behaves similar to applying <a href="zoom_image_factor.html"><code><span data-if="hdevelop" style="display:inline">zoom_image_factor</span><span data-if="c" style="display:none">zoom_image_factor</span><span data-if="cpp" style="display:none">ZoomImageFactor</span><span data-if="com" style="display:none">ZoomImageFactor</span><span data-if="dotnet" style="display:none">ZoomImageFactor</span><span data-if="python" style="display:none">zoom_image_factor</span></code></a> onto
the original XYZ-images.
Note that this method does not use the 3D-coordinates of the points for
the point selection, only their 2D image coordinates.
</p>
<p>It is important to notice that for this method, the parameter
<a href="#SampleDistance"><i><code><span data-if="hdevelop" style="display:inline">SampleDistance</span><span data-if="c" style="display:none">SampleDistance</span><span data-if="cpp" style="display:none">SampleDistance</span><span data-if="com" style="display:none">SampleDistance</span><span data-if="dotnet" style="display:none">sampleDistance</span><span data-if="python" style="display:none">sample_distance</span></code></i></a> corresponds to a distance in pixels, not to a
distance in 3D space as for the other methods.
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'xyz_mapping_compute_normals'</span><span data-if="c" style="display:none">"xyz_mapping_compute_normals"</span><span data-if="cpp" style="display:none">"xyz_mapping_compute_normals"</span><span data-if="com" style="display:none">"xyz_mapping_compute_normals"</span><span data-if="dotnet" style="display:none">"xyz_mapping_compute_normals"</span><span data-if="python" style="display:none">"xyz_mapping_compute_normals"</span></i>:</b></dt>
<dd>
<p>

The method  <i><span data-if="hdevelop" style="display:inline">'xyz_mapping_compute_normals'</span><span data-if="c" style="display:none">"xyz_mapping_compute_normals"</span><span data-if="cpp" style="display:none">"xyz_mapping_compute_normals"</span><span data-if="com" style="display:none">"xyz_mapping_compute_normals"</span><span data-if="dotnet" style="display:none">"xyz_mapping_compute_normals"</span><span data-if="python" style="display:none">"xyz_mapping_compute_normals"</span></i> selects the same points
as the method <i><span data-if="hdevelop" style="display:inline">'xyz_mapping'</span><span data-if="c" style="display:none">"xyz_mapping"</span><span data-if="cpp" style="display:none">"xyz_mapping"</span><span data-if="com" style="display:none">"xyz_mapping"</span><span data-if="dotnet" style="display:none">"xyz_mapping"</span><span data-if="python" style="display:none">"xyz_mapping"</span></i>, but additionally calculates the
normals for all points that were selected. The z-component of the normal
vectors is always positive.
If the input object model contains normals, those normals are copied
to the output.
Otherwise, the normals are computed based on the XYZ-mapping.
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'furthest_point'</span><span data-if="c" style="display:none">"furthest_point"</span><span data-if="cpp" style="display:none">"furthest_point"</span><span data-if="com" style="display:none">"furthest_point"</span><span data-if="dotnet" style="display:none">"furthest_point"</span><span data-if="python" style="display:none">"furthest_point"</span></i>:</b></dt>
<dd>
<p>

The method <i><span data-if="hdevelop" style="display:inline">'furthest_point'</span><span data-if="c" style="display:none">"furthest_point"</span><span data-if="cpp" style="display:none">"furthest_point"</span><span data-if="com" style="display:none">"furthest_point"</span><span data-if="dotnet" style="display:none">"furthest_point"</span><span data-if="python" style="display:none">"furthest_point"</span></i> iteratively adds the point of the
input object to the output object that is furthest from all points
already added to the output model. This usually leads to a reasonably
uniform sampling.
For this method, the desired number of points in the output model is
passed in <a href="#SampleDistance"><i><code><span data-if="hdevelop" style="display:inline">SampleDistance</span><span data-if="c" style="display:none">SampleDistance</span><span data-if="cpp" style="display:none">SampleDistance</span><span data-if="com" style="display:none">SampleDistance</span><span data-if="dotnet" style="display:none">sampleDistance</span><span data-if="python" style="display:none">sample_distance</span></code></i></a>.
If that number exceeds the number of points in the input object,
then all points of the input object are returned.
</p>
<p>The first point added to the output object is the point that is
furthest away from the center of the axis aligned bounding box
around the points of the input object.
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'furthest_point_compute_normals'</span><span data-if="c" style="display:none">"furthest_point_compute_normals"</span><span data-if="cpp" style="display:none">"furthest_point_compute_normals"</span><span data-if="com" style="display:none">"furthest_point_compute_normals"</span><span data-if="dotnet" style="display:none">"furthest_point_compute_normals"</span><span data-if="python" style="display:none">"furthest_point_compute_normals"</span></i>:</b></dt>
<dd>
<p>

The method  <i><span data-if="hdevelop" style="display:inline">'furthest_point_compute_normals'</span><span data-if="c" style="display:none">"furthest_point_compute_normals"</span><span data-if="cpp" style="display:none">"furthest_point_compute_normals"</span><span data-if="com" style="display:none">"furthest_point_compute_normals"</span><span data-if="dotnet" style="display:none">"furthest_point_compute_normals"</span><span data-if="python" style="display:none">"furthest_point_compute_normals"</span></i> selects the same points
as the method <i><span data-if="hdevelop" style="display:inline">'furthest_point'</span><span data-if="c" style="display:none">"furthest_point"</span><span data-if="cpp" style="display:none">"furthest_point"</span><span data-if="com" style="display:none">"furthest_point"</span><span data-if="dotnet" style="display:none">"furthest_point"</span><span data-if="python" style="display:none">"furthest_point"</span></i>, but additionally calculates the
normals for all points that were selected.
The number of desired points in the output object is passed in
<a href="#SampleDistance"><i><code><span data-if="hdevelop" style="display:inline">SampleDistance</span><span data-if="c" style="display:none">SampleDistance</span><span data-if="cpp" style="display:none">SampleDistance</span><span data-if="com" style="display:none">SampleDistance</span><span data-if="dotnet" style="display:none">sampleDistance</span><span data-if="python" style="display:none">sample_distance</span></code></i></a>.
</p>
<p>To compute the normals, the input object model must either contain normals,
which are copied, or it must contain a XYZ-mapping attribute from which the
normals are computed. The z-component of the calculated normal
vectors is always positive. The XYZ-mapping is created by
<a href="xyz_to_object_model_3d.html"><code><span data-if="hdevelop" style="display:inline">xyz_to_object_model_3d</span><span data-if="c" style="display:none">xyz_to_object_model_3d</span><span data-if="cpp" style="display:none">XyzToObjectModel3d</span><span data-if="com" style="display:none">XyzToObjectModel3d</span><span data-if="dotnet" style="display:none">XyzToObjectModel3d</span><span data-if="python" style="display:none">xyz_to_object_model_3d</span></code></a>.
</p>
</dd>
</dl>
<p>If the input object model contains faces (triangles or polygons) or is
a 3D primitive, the surface is sampled with the given
distance.
In this case, the method specified in <a href="#Method"><i><code><span data-if="hdevelop" style="display:inline">Method</span><span data-if="c" style="display:none">Method</span><span data-if="cpp" style="display:none">Method</span><span data-if="com" style="display:none">Method</span><span data-if="dotnet" style="display:none">method</span><span data-if="python" style="display:none">method</span></code></i></a> is ignored.
The directions of the computed normals depend on the face orientation of the
model. Usually, the orientation of the faces does not vary within one
CAD model, which results in a set of normals that is either pointing inwards
or outwards.
Note that planes and cylinders must have finite extent.
If the input object model contains lines, the lines are sampled with the
given distance.
</p>
<p>The sampling process approximates surfaces by creating new points in the
output object model.
Therefore, any extended attributes from the input object model are discarded.
</p>
<p>For mixed input object models, the sampling priority is (from top to
bottom) faces, lines, primitives and points, i.e., only the objects
of the highest priority are sampled.
</p>
<p>The parameter <a href="#SampleDistance"><i><code><span data-if="hdevelop" style="display:inline">SampleDistance</span><span data-if="c" style="display:none">SampleDistance</span><span data-if="cpp" style="display:none">SampleDistance</span><span data-if="com" style="display:none">SampleDistance</span><span data-if="dotnet" style="display:none">sampleDistance</span><span data-if="python" style="display:none">sample_distance</span></code></i></a> accepts either one value, which is
then used for all 3D object models passed in <a href="#ObjectModel3D"><i><code><span data-if="hdevelop" style="display:inline">ObjectModel3D</span><span data-if="c" style="display:none">ObjectModel3D</span><span data-if="cpp" style="display:none">ObjectModel3D</span><span data-if="com" style="display:none">ObjectModel3D</span><span data-if="dotnet" style="display:none">objectModel3D</span><span data-if="python" style="display:none">object_model_3d</span></code></i></a>, or one
value per input object model. The unit of the sample distance is the usual
HALCON-internal unit <i><span data-if="hdevelop" style="display:inline">'m'</span><span data-if="c" style="display:none">"m"</span><span data-if="cpp" style="display:none">"m"</span><span data-if="com" style="display:none">"m"</span><span data-if="dotnet" style="display:none">"m"</span><span data-if="python" style="display:none">"m"</span></i>.
</p>
<h2 id="sec_execution">运行信息</h2>
<ul>
  <li>多线程类型:可重入(与非独占操作符并行运行)。</li>
<li>多线程作用域:全局(可以从任何线程调用)。</li>
  <li>未经并行化处理。</li>
</ul>
<p>This operator supports canceling timeouts and interrupts.</p>
<h2 id="sec_parameters">参数表</h2>
  <div class="par">
<div class="parhead">
<span id="ObjectModel3D" class="parname"><b><code><span data-if="hdevelop" style="display:inline">ObjectModel3D</span><span data-if="c" style="display:none">ObjectModel3D</span><span data-if="cpp" style="display:none">ObjectModel3D</span><span data-if="com" style="display:none">ObjectModel3D</span><span data-if="dotnet" style="display:none">objectModel3D</span><span data-if="python" style="display:none">object_model_3d</span></code></b> (input_control)  </span><span>object_model_3d(-array) <code>→</code> <span data-if="dotnet" style="display:none"><a href="HObjectModel3D.html">HObjectModel3D</a>, </span><span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">MaybeSequence[HHandle]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (handle)</span><span data-if="dotnet" style="display:none"> (<i>IntPtr</i>)</span><span data-if="cpp" style="display:none"> (<i>HHandle</i>)</span><span data-if="c" style="display:none"> (<i>handle</i>)</span></span>
</div>
<p class="pardesc">Handle of the 3D object model to be sampled.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="Method" class="parname"><b><code><span data-if="hdevelop" style="display:inline">Method</span><span data-if="c" style="display:none">Method</span><span data-if="cpp" style="display:none">Method</span><span data-if="com" style="display:none">Method</span><span data-if="dotnet" style="display:none">method</span><span data-if="python" style="display:none">method</span></code></b> (input_control)  </span><span>string <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">str</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (string)</span><span data-if="dotnet" style="display:none"> (<i>string</i>)</span><span data-if="cpp" style="display:none"> (<i>HString</i>)</span><span data-if="c" style="display:none"> (<i>char*</i>)</span></span>
</div>
<p class="pardesc">Selects between the different subsampling methods.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>
    <span data-if="hdevelop" style="display:inline">'fast'</span>
    <span data-if="c" style="display:none">"fast"</span>
    <span data-if="cpp" style="display:none">"fast"</span>
    <span data-if="com" style="display:none">"fast"</span>
    <span data-if="dotnet" style="display:none">"fast"</span>
    <span data-if="python" style="display:none">"fast"</span>
</p>
<p class="pardesc"><span class="parcat">List of values:
      </span><span data-if="hdevelop" style="display:inline">'accurate'</span><span data-if="c" style="display:none">"accurate"</span><span data-if="cpp" style="display:none">"accurate"</span><span data-if="com" style="display:none">"accurate"</span><span data-if="dotnet" style="display:none">"accurate"</span><span data-if="python" style="display:none">"accurate"</span>, <span data-if="hdevelop" style="display:inline">'accurate_use_normals'</span><span data-if="c" style="display:none">"accurate_use_normals"</span><span data-if="cpp" style="display:none">"accurate_use_normals"</span><span data-if="com" style="display:none">"accurate_use_normals"</span><span data-if="dotnet" style="display:none">"accurate_use_normals"</span><span data-if="python" style="display:none">"accurate_use_normals"</span>, <span data-if="hdevelop" style="display:inline">'fast'</span><span data-if="c" style="display:none">"fast"</span><span data-if="cpp" style="display:none">"fast"</span><span data-if="com" style="display:none">"fast"</span><span data-if="dotnet" style="display:none">"fast"</span><span data-if="python" style="display:none">"fast"</span>, <span data-if="hdevelop" style="display:inline">'fast_compute_normals'</span><span data-if="c" style="display:none">"fast_compute_normals"</span><span data-if="cpp" style="display:none">"fast_compute_normals"</span><span data-if="com" style="display:none">"fast_compute_normals"</span><span data-if="dotnet" style="display:none">"fast_compute_normals"</span><span data-if="python" style="display:none">"fast_compute_normals"</span>, <span data-if="hdevelop" style="display:inline">'furthest_point'</span><span data-if="c" style="display:none">"furthest_point"</span><span data-if="cpp" style="display:none">"furthest_point"</span><span data-if="com" style="display:none">"furthest_point"</span><span data-if="dotnet" style="display:none">"furthest_point"</span><span data-if="python" style="display:none">"furthest_point"</span>, <span data-if="hdevelop" style="display:inline">'furthest_point_compute_normals'</span><span data-if="c" style="display:none">"furthest_point_compute_normals"</span><span data-if="cpp" style="display:none">"furthest_point_compute_normals"</span><span data-if="com" style="display:none">"furthest_point_compute_normals"</span><span data-if="dotnet" style="display:none">"furthest_point_compute_normals"</span><span data-if="python" style="display:none">"furthest_point_compute_normals"</span>, <span data-if="hdevelop" style="display:inline">'xyz_mapping'</span><span data-if="c" style="display:none">"xyz_mapping"</span><span data-if="cpp" style="display:none">"xyz_mapping"</span><span data-if="com" style="display:none">"xyz_mapping"</span><span data-if="dotnet" style="display:none">"xyz_mapping"</span><span data-if="python" style="display:none">"xyz_mapping"</span>, <span data-if="hdevelop" style="display:inline">'xyz_mapping_compute_normals'</span><span data-if="c" style="display:none">"xyz_mapping_compute_normals"</span><span data-if="cpp" style="display:none">"xyz_mapping_compute_normals"</span><span data-if="com" style="display:none">"xyz_mapping_compute_normals"</span><span data-if="dotnet" style="display:none">"xyz_mapping_compute_normals"</span><span data-if="python" style="display:none">"xyz_mapping_compute_normals"</span></p>
</div>
  <div class="par">
<div class="parhead">
<span id="SampleDistance" class="parname"><b><code><span data-if="hdevelop" style="display:inline">SampleDistance</span><span data-if="c" style="display:none">SampleDistance</span><span data-if="cpp" style="display:none">SampleDistance</span><span data-if="com" style="display:none">SampleDistance</span><span data-if="dotnet" style="display:none">sampleDistance</span><span data-if="python" style="display:none">sample_distance</span></code></b> (input_control)  </span><span>real(-array) <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">MaybeSequence[Union[float, int]]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real / </span><span data-if="hdevelop" style="display:inline">integer)</span><span data-if="dotnet" style="display:none"> (<i>double</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>double</i> / </span><span data-if="cpp" style="display:none">Hlong)</span><span data-if="c" style="display:none"> (<i>double</i> / </span><span data-if="c" style="display:none">Hlong)</span></span>
</div>
<p class="pardesc">Sampling distance.</p>
<p class="pardesc"><span class="parcat">Number of elements:
      </span>SampleDistance == 1 || SampleDistance == ObjectModel3D</p>
<p class="pardesc"><span class="parcat">Default:
      </span>0.05</p>
</div>
  <div class="par">
<div class="parhead">
<span id="GenParamName" class="parname"><b><code><span data-if="hdevelop" style="display:inline">GenParamName</span><span data-if="c" style="display:none">GenParamName</span><span data-if="cpp" style="display:none">GenParamName</span><span data-if="com" style="display:none">GenParamName</span><span data-if="dotnet" style="display:none">genParamName</span><span data-if="python" style="display:none">gen_param_name</span></code></b> (input_control)  </span><span>string-array <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[str]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (string)</span><span data-if="dotnet" style="display:none"> (<i>string</i>)</span><span data-if="cpp" style="display:none"> (<i>HString</i>)</span><span data-if="c" style="display:none"> (<i>char*</i>)</span></span>
</div>
<p class="pardesc">Names of the generic parameters that can be adjusted.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>[]</p>
<p class="pardesc"><span class="parcat">List of values:
      </span><span data-if="hdevelop" style="display:inline">'max_angle_diff'</span><span data-if="c" style="display:none">"max_angle_diff"</span><span data-if="cpp" style="display:none">"max_angle_diff"</span><span data-if="com" style="display:none">"max_angle_diff"</span><span data-if="dotnet" style="display:none">"max_angle_diff"</span><span data-if="python" style="display:none">"max_angle_diff"</span>, <span data-if="hdevelop" style="display:inline">'min_num_points'</span><span data-if="c" style="display:none">"min_num_points"</span><span data-if="cpp" style="display:none">"min_num_points"</span><span data-if="com" style="display:none">"min_num_points"</span><span data-if="dotnet" style="display:none">"min_num_points"</span><span data-if="python" style="display:none">"min_num_points"</span></p>
</div>
  <div class="par">
<div class="parhead">
<span id="GenParamValue" class="parname"><b><code><span data-if="hdevelop" style="display:inline">GenParamValue</span><span data-if="c" style="display:none">GenParamValue</span><span data-if="cpp" style="display:none">GenParamValue</span><span data-if="com" style="display:none">GenParamValue</span><span data-if="dotnet" style="display:none">genParamValue</span><span data-if="python" style="display:none">gen_param_value</span></code></b> (input_control)  </span><span>number-array <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[Union[int, str, float]]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real / </span><span data-if="hdevelop" style="display:inline">integer / </span><span data-if="hdevelop" style="display:inline">string)</span><span data-if="dotnet" style="display:none"> (<i>double</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long / </span><span data-if="dotnet" style="display:none">string)</span><span data-if="cpp" style="display:none"> (<i>double</i> / </span><span data-if="cpp" style="display:none">Hlong / </span><span data-if="cpp" style="display:none">HString)</span><span data-if="c" style="display:none"> (<i>double</i> / </span><span data-if="c" style="display:none">Hlong / </span><span data-if="c" style="display:none">char*)</span></span>
</div>
<p class="pardesc">Values of the generic parameters that can be
adjusted.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>[]</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span>1, 2, 5, 10, 20, 0.1, 0.25, 0.5</p>
</div>
  <div class="par">
<div class="parhead">
<span id="SampledObjectModel3D" class="parname"><b><code><span data-if="hdevelop" style="display:inline">SampledObjectModel3D</span><span data-if="c" style="display:none">SampledObjectModel3D</span><span data-if="cpp" style="display:none">SampledObjectModel3D</span><span data-if="com" style="display:none">SampledObjectModel3D</span><span data-if="dotnet" style="display:none">sampledObjectModel3D</span><span data-if="python" style="display:none">sampled_object_model_3d</span></code></b> (output_control)  </span><span>object_model_3d(-array) <code>→</code> <span data-if="dotnet" style="display:none"><a href="HObjectModel3D.html">HObjectModel3D</a>, </span><span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[HHandle]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (handle)</span><span data-if="dotnet" style="display:none"> (<i>IntPtr</i>)</span><span data-if="cpp" style="display:none"> (<i>HHandle</i>)</span><span data-if="c" style="display:none"> (<i>handle</i>)</span></span>
</div>
<p class="pardesc">Handle of the 3D object model that contains the
sampled points.</p>
<p class="pardesc"><span class="parcat">Number of elements:
      </span>SampledObjectModel3D == ObjectModel3D</p>
</div>
<h2 id="sec_example_all">例程 (HDevelop)</h2>
<pre class="example">
gen_box_object_model_3d ([0,0,0,0,0,0,0],3,2,1, ObjectModel3D)
sample_object_model_3d (ObjectModel3D, 'fast', 0.05, [], [], \
                        SampledObjectModel3D)
dev_get_window (WindowHandle)
visualize_object_model_3d (WindowHandle, SampledObjectModel3D, \
                           [], [], [], [], [], [], [], PoseOut)
</pre>
<h2 id="sec_result">结果</h2>
<p><code><span data-if="hdevelop" style="display:inline">sample_object_model_3d</span><span data-if="c" style="display:none">sample_object_model_3d</span><span data-if="cpp" style="display:none">SampleObjectModel3d</span><span data-if="com" style="display:none">SampleObjectModel3d</span><span data-if="dotnet" style="display:none">SampleObjectModel3d</span><span data-if="python" style="display:none">sample_object_model_3d</span></code> returns <TT>2</TT> (
      <TT>H_MSG_TRUE</TT>)
     if all parameters
are correct. 如有必要，将引发异常。</p>
<h2 id="sec_predecessors">可能的前置算子</h2>
<p>
<code><a href="read_object_model_3d.html"><span data-if="hdevelop" style="display:inline">read_object_model_3d</span><span data-if="c" style="display:none">read_object_model_3d</span><span data-if="cpp" style="display:none">ReadObjectModel3d</span><span data-if="com" style="display:none">ReadObjectModel3d</span><span data-if="dotnet" style="display:none">ReadObjectModel3d</span><span data-if="python" style="display:none">read_object_model_3d</span></a></code>, 
<code><a href="gen_plane_object_model_3d.html"><span data-if="hdevelop" style="display:inline">gen_plane_object_model_3d</span><span data-if="c" style="display:none">gen_plane_object_model_3d</span><span data-if="cpp" style="display:none">GenPlaneObjectModel3d</span><span data-if="com" style="display:none">GenPlaneObjectModel3d</span><span data-if="dotnet" style="display:none">GenPlaneObjectModel3d</span><span data-if="python" style="display:none">gen_plane_object_model_3d</span></a></code>, 
<code><a href="gen_sphere_object_model_3d.html"><span data-if="hdevelop" style="display:inline">gen_sphere_object_model_3d</span><span data-if="c" style="display:none">gen_sphere_object_model_3d</span><span data-if="cpp" style="display:none">GenSphereObjectModel3d</span><span data-if="com" style="display:none">GenSphereObjectModel3d</span><span data-if="dotnet" style="display:none">GenSphereObjectModel3d</span><span data-if="python" style="display:none">gen_sphere_object_model_3d</span></a></code>, 
<code><a href="gen_cylinder_object_model_3d.html"><span data-if="hdevelop" style="display:inline">gen_cylinder_object_model_3d</span><span data-if="c" style="display:none">gen_cylinder_object_model_3d</span><span data-if="cpp" style="display:none">GenCylinderObjectModel3d</span><span data-if="com" style="display:none">GenCylinderObjectModel3d</span><span data-if="dotnet" style="display:none">GenCylinderObjectModel3d</span><span data-if="python" style="display:none">gen_cylinder_object_model_3d</span></a></code>, 
<code><a href="gen_box_object_model_3d.html"><span data-if="hdevelop" style="display:inline">gen_box_object_model_3d</span><span data-if="c" style="display:none">gen_box_object_model_3d</span><span data-if="cpp" style="display:none">GenBoxObjectModel3d</span><span data-if="com" style="display:none">GenBoxObjectModel3d</span><span data-if="dotnet" style="display:none">GenBoxObjectModel3d</span><span data-if="python" style="display:none">gen_box_object_model_3d</span></a></code>, 
<code><a href="gen_sphere_object_model_3d_center.html"><span data-if="hdevelop" style="display:inline">gen_sphere_object_model_3d_center</span><span data-if="c" style="display:none">gen_sphere_object_model_3d_center</span><span data-if="cpp" style="display:none">GenSphereObjectModel3dCenter</span><span data-if="com" style="display:none">GenSphereObjectModel3dCenter</span><span data-if="dotnet" style="display:none">GenSphereObjectModel3dCenter</span><span data-if="python" style="display:none">gen_sphere_object_model_3d_center</span></a></code>, 
<code><a href="xyz_to_object_model_3d.html"><span data-if="hdevelop" style="display:inline">xyz_to_object_model_3d</span><span data-if="c" style="display:none">xyz_to_object_model_3d</span><span data-if="cpp" style="display:none">XyzToObjectModel3d</span><span data-if="com" style="display:none">XyzToObjectModel3d</span><span data-if="dotnet" style="display:none">XyzToObjectModel3d</span><span data-if="python" style="display:none">xyz_to_object_model_3d</span></a></code>
</p>
<h2 id="sec_successors">可能的后置算子</h2>
<p>
<code><a href="get_object_model_3d_params.html"><span data-if="hdevelop" style="display:inline">get_object_model_3d_params</span><span data-if="c" style="display:none">get_object_model_3d_params</span><span data-if="cpp" style="display:none">GetObjectModel3dParams</span><span data-if="com" style="display:none">GetObjectModel3dParams</span><span data-if="dotnet" style="display:none">GetObjectModel3dParams</span><span data-if="python" style="display:none">get_object_model_3d_params</span></a></code>, 
<code><a href="clear_object_model_3d.html"><span data-if="hdevelop" style="display:inline">clear_object_model_3d</span><span data-if="c" style="display:none">clear_object_model_3d</span><span data-if="cpp" style="display:none">ClearObjectModel3d</span><span data-if="com" style="display:none">ClearObjectModel3d</span><span data-if="dotnet" style="display:none">ClearObjectModel3d</span><span data-if="python" style="display:none">clear_object_model_3d</span></a></code>
</p>
<h2 id="sec_alternatives">可替代算子</h2>
<p>
<code><a href="simplify_object_model_3d.html"><span data-if="hdevelop" style="display:inline">simplify_object_model_3d</span><span data-if="c" style="display:none">simplify_object_model_3d</span><span data-if="cpp" style="display:none">SimplifyObjectModel3d</span><span data-if="com" style="display:none">SimplifyObjectModel3d</span><span data-if="dotnet" style="display:none">SimplifyObjectModel3d</span><span data-if="python" style="display:none">simplify_object_model_3d</span></a></code>, 
<code><a href="smooth_object_model_3d.html"><span data-if="hdevelop" style="display:inline">smooth_object_model_3d</span><span data-if="c" style="display:none">smooth_object_model_3d</span><span data-if="cpp" style="display:none">SmoothObjectModel3d</span><span data-if="com" style="display:none">SmoothObjectModel3d</span><span data-if="dotnet" style="display:none">SmoothObjectModel3d</span><span data-if="python" style="display:none">smooth_object_model_3d</span></a></code>
</p>
<h2 id="sec_module">模块</h2>
<p>
3D Metrology</p>
<!--OP_REF_FOOTER_START-->
<hr>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<div class="footer">
<div class="copyright">HALCON算子参考手册 Copyright © 2015-2023 51Halcon</div>
</div>
</div>
</body>
</html>
